// 发送ajax请求
/* 
* 1. 封装功能函数
*     1. 功能点明确
*     2. 函数内部应该保留固定的代码（静态的）
*     3. 将动态的数据抽取成参数,由使用者根据自身的情况动态的传入实参
*     4.一个良好的功能函数应该设置形参的默认值（ES6的形参默认值）
*
* 2. 封装功能组件
*      1. 功能明确
*      2. 组件的内部保留静态的代码
*      3. 将动态的数据抽取成props参数,有使用者根据自身的情况以标签属性的形式传入props数据
*      4. 一个良好的属性应该设置组件的必要性及数据类型
*      如 :   props:{
*                  msg:{
*                        required: true,
*                        default: 默认值,
*                        type: String
*                  }
*             }
* */

import config from './config'
export default (url, data = {}, method = "GET") => {

  //  发送网络请求
  return new Promise((resolve, reject) => {
    // 1. new Promise初始化Promise实例的状态为pending(等待)
    wx.request({//发起 HTTPS 网络请求
      // 地址
      url: config.host + url,
      // 参数
      data,
      //  请求方法默认GET
      method,
      // 请求头
      header: {
        // 从本地获取数据  indexO()方法返回指定的值在item的下标  找不到返回-1
        cookie: wx.getStorageSync('cookies') ? wx.getStorageSync('cookies').find(item=>item.indexOf('MUSIC_U')!== -1) : ''
        // cookie: wx.getStorageSync('cookies')?wx.getStorageSync('cookies'):''
      },
      // 成功时的回调
      success: (res) => {
        if (data.isLogin) {// 登录请求
          let cookie = res.cookies;
          console.log(cookie);
          // 将用户的cookies存入本地
          wx.setStorageSync('cookies',cookie)
        }
        // 请求成功 返回数据
        resolve(res.data);// resolve修改Promise的状态为成功状态resolved
      },
      // 失败时的回调
      fail: (err) => {
        // console.log('请求失败', err);
        reject(err);// reject修改Promise的状态为失败状态rejected
      }
    })
  })
}
